package com.gl.glcourses.vos;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class EdicionCurso implements Serializable, IValueObject {
	
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	@OneToOne
	private Curso curso;
	private Date fechaBaja;
	private EstadoEdicionCurso estadoEdicionCurso;
	@ManyToMany(targetEntity=Oficina.class)
	private List<Oficina> oficina;
	@OneToMany(mappedBy="edicionCurso", fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	private List<SesionEdicionCurso> sesionCurso;
	@OneToMany(mappedBy="edicionCurso")
	private List<Participante> participantes;
	private Date fechaDesde;
	private Date fechaHasta;
//	private int cupos;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Curso getCurso() {
		return curso;
	}
	public void setCurso(Curso curso) {
		this.curso = curso;
	}
	public EstadoEdicionCurso getEstadoEdicionCurso() {
		return estadoEdicionCurso;
	}
	public void setEstado(String estado) {
		this.estadoEdicionCurso = EstadoEdicionCurso.valueOf(estado);
	}	
	public String getEstado() {
		return estadoEdicionCurso.toString();
	}
	public void setEstadoEdicionCurso(EstadoEdicionCurso estadoEdicionCurso) {
		this.estadoEdicionCurso = estadoEdicionCurso;
	}
	public List<Oficina> getOficina() {
		return oficina;
	}
	public void setOficina(List<Oficina> oficina) {
		this.oficina = oficina;
	}
	public List<SesionEdicionCurso> getSesionCurso() {
		return sesionCurso;
	}
	public void setSesionCurso(List<SesionEdicionCurso> sesionCurso) {
		this.sesionCurso = sesionCurso;
	}
	public List<Participante> getParticipantes() {
		return participantes;
	}
	public void setParticipantes(List<Participante> participantes) {
		this.participantes = participantes;
	}
	public Date getFechaDesde() {
		return fechaDesde;
	}
	public void setFechaDesde(Date fechaDesde) {
		this.fechaDesde = fechaDesde;
	}
	public Date getFechaHasta() {
		return fechaHasta;
	}
	public void setFechaHasta(Date fechaHasta) {
		this.fechaHasta = fechaHasta;
	}
	public Date getFechaBaja() {
		return fechaBaja;
	}
	public void setFechaBaja(Date fechaBaja) {
		this.fechaBaja = fechaBaja;
	}
//	public void setCupos(int cupos) {
//		this.cupos = cupos;
//	}
//	public int getCupos() {
//		return cupos;
//	}

}
